package be.ipl.ejb.daoimpl;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import be.ipl.ejb.dao.JoueurDao;
import be.ipl.ejb.dao.PartieDao;
import be.ipl.ejb.domaine.Partie;
import be.ipl.ejb.domaine.Partie.Etat;

@Stateless
public class PartieDaoImpl extends DaoImpl<Integer, Partie> implements
		PartieDao {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@EJB
	private JoueurDao joueurDao;


	@Override
	public Partie chargerParticipations(Partie partie) {
		partie = rechercher(partie.getId());
		partie.chargerJoueurs();
		return partie;
	}

	@Override
	public List<Partie> listerPartiesEnAttente() {
		return this.liste("SELECT p FROM Partie p WHERE p.etat = ?1",
				Etat.EN_ATTENTE);
	}

	@Override
	public List<Partie> listerPartiesFinie() {
		return this.liste("SELECT p FROM Partie p WHERE p.etat = ?1",
				Etat.FINIE);
	}

	@Override
	public List<Partie> listerPartiesEnCours() {
		return this.liste("SELECT p FROM Partie p WHERE p.etat = ?1",
				Etat.EN_COURS);
	}

	@Override
	public List<Partie> listerPartiesAnnulee() {
		return this.liste("SELECT p FROM Partie p WHERE p.etat = ?1",
				Etat.ANNULEE);
	}

	@Override
	public Partie trouverPartie(String nomPartie) {
		String nomPartieU = "%" + nomPartie + "%";
		return this.recherche("SELECT p FROM Partie p WHERE p.nom LIKE ?1",
				nomPartieU);
	}

}
